﻿using System.Collections.Generic;
using Wedn.DAL;
using Wedn.Model.Data;

namespace Wedn.BLL.Data
{
    /// <summary>
    /// 评论管理抽象类不可被实例化(初步审核通过)
    /// </summary>
    public abstract class CommentsManager
    {
        #region 增加评论
        /// <summary>
        /// 添加一个新的评论 返回是否添加成功
        /// </summary>
        /// <param name="comment">要添加的评论对象</param>
        /// <returns>添加是否成功</returns>
        public static bool Insert(Comment comment)
        {
            return CommentsDAO.Insert(comment) > 0 ? true : false;
        }
        #endregion

        #region 删除评论
        /// <summary>
        /// 根据评论ID删除数据库评论表中的评论对象
        /// </summary>
        /// <param name="commentid">要删除的评论ID</param>
        /// <returns>删除是否成功</returns>
        public static bool Delete(int commentid)
        {
            return CommentsDAO.Delete(commentid) > 0 ? true : false;
        }
        #endregion

        #region 修改评论
        /// <summary>
        /// 根据评论对象的ID属性更新评论信息
        /// </summary>
        /// <param name="comment">要更新的评论对象</param>
        /// <returns>更新命令是否成功</returns>
        public static bool Update(Comment comment)
        {
            return CommentsDAO.Update(comment) > 0 ? true : false;
        }
        #endregion

        #region 选取评论

        #region 获取表中主键最大值
        /// <summary>
        /// 获取表中主键最大值
        /// </summary>
        /// <returns>主键最大值</returns>
        public static int GetMaxId()
        {
            return CommentsDAO.GetMaxId();
        }
        #endregion

        #region 获取所有评论
        /// <summary>
        /// 获取评论表中所有评论信息, 返回对象集合
        /// </summary>
        /// <returns>所有评论信息集合</returns>
        public static List<Comment> GetComments()
        {
            return CommentsDAO.SelectComments();
        }
        #endregion

        #region 根据指定字段和是否降序排序从文章信息表中获取指定条数文章信息, 返回对象集合
        /// <summary>
        /// 根据指定字段和是否降序排序从评论表中获取指定条数评论信息, 返回对象集合
        /// </summary>
        /// <param name="pageSize">选择数目</param>
        /// <param name="orderField">排序字段</param>
        /// <param name="isDescending">是否降序</param>
        /// <returns>符合条件评论信息集合</returns>
        public static List<Comment> GetComments(int pageSize, string orderField, bool isDescending)
        {
            return CommentsDAO.SelectComments(pageSize, orderField, isDescending);
        }
        #endregion

        #region 根据评论ID获取评论对象
        /// <summary>
        /// 根据评论ID获取评论表中所有评论对象, 返回评论对象
        /// </summary>
        /// <param name="commentid">指定ID</param>
        /// <returns>所有评论信息集合</returns>
        public static Comment GetComment(int commentid)
        {
            return CommentsDAO.SelectComment(commentid);
        }
        #endregion

        #region 根据文章ID获取评论
        /// <summary>
        /// 根据文章ID获取属于该文章的所有评论, 返回对象集合
        /// </summary>
        /// <param name="postId">文章ID</param>
        /// <returns>评论信息集合</returns>
        public static List<Comment> GetComments(int postId)
        {
            return CommentsDAO.SelectComments(postId);
        }
        #endregion

        #region 选取评论总数
        /// <summary>
        /// 选取评论总数
        /// </summary>
        /// <returns>总数</returns>
        public static int GetCommentsCount()
        {
            return CommentsDAO.SelectCommentsCount();
        }
        #endregion

        #endregion
    }
}
